/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import 'package:flutter/material.dart';
import 'package:hadss_uni_input/hadss_uni_input.dart';

class DragExample extends StatefulWidget {
  const DragExample({super.key});

  @override
  DragExampleState createState() => DragExampleState();
}

class DragExampleState extends State<DragExample> {
  Offset _offset = Offset.zero;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('拖拽'),
        leading: IconButton(
          icon: const Icon(Icons.arrow_back),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
      body: Transform(
        alignment: Alignment.center,
        transform: Matrix4.identity()..translate(_offset.dx, _offset.dy),
        child: Center(
          child: UnifiedGestureDetector(
            onDragStart: onDragStart,
            onDragUpdate: onDragUpdate,
            child: Container(
              width: 200,
              height: 200,
              color: Colors.green,
              alignment: Alignment.center,
              child: const Text(
                '拖拽',
                style: TextStyle(fontSize: 30),
              ),
            ),
          ),
        ),
      ),
    );
  }

  void onDragStart(DragStartDetails detail) {
    setState(() {
      _offset = detail.localPosition;
    });
  }

  void onDragUpdate(DragUpdateDetails detail) {
    setState(() {
      _offset = detail.localPosition;
    });
  }
}
